Q. 스코프 체인을 통한 식별자 탐색 과정은 어떻게 진행되는지 설명해 주세요.
🧑🏻💻 Answer.
✅ 탐색 과정
탐색의 시작은 현재 실행 중인 함수 또는 전역 스코프에서 시작합니다.
식별자를 현재 스코프에서 찾을 수 없으면, 부모 스코프로 이동하여 식별자를 탐색합니다. 부모 스코프는 현재 스코프를 감싸고 있는 외부 함수 또는 블록의 스코프를 의미합니다.
이러한 프로세스를 전역 스코프(global scope)까지 반복합니다. 전역 스코프는 모든 코드가 접근할 수 있는 가장 바깥쪽 스코프로, 전역 변수 및 함수가 정의된 위치입니다.
식별자를 찾으면 해당 값에 접근하거나 함수를 호출합니다. 만약 스코프 체인의 끝까지 도달하더라도 식별자를 찾을 수 없다면 "ReferenceError"와 함께 오류가 발생합니다.
이때 JS는 렉시컬 스코프를 따르므로 함수가 호출된 위치가 아닌 정의된 위치를 기준으로 상위 스코프를 결정하게 됩니다.
var x = 10;
function outer() {
var y = 20;
function inner() {
console.log(x); // 10 (전역 스코프에서 가져옴)
console.log(y); // 20 (outer 스코프에서 가져옴)
}
inner();
}
outer();